package day10;

import java.util.Scanner;

/**
 * 有一种纸牌游戏，很有意思，给你N张纸牌，一字排开，纸牌有正反两面，开始的纸牌可能是一种乱的状态（有些朝正，
 * 有些朝反），现在你需要整理这些纸牌。但是麻烦的是，每当你翻一张纸牌（由正翻到反，或者有反翻到正）时，
 * 他左右两张纸牌（最左边和最右边的纸牌，只会影响附近一张）也必须跟着翻动，现在给你一个乱的状态，
 * 问你能否把他们整理好，使得每张纸牌都正面朝上，如果可以，最少需要多少次操作。
 * @author chenxiaokang
 *
 */
m
public class Ques1201 {
	
	int len;
	int[] arr = new int[1010];
	
	public int min(int x,int y){
		if(x > y){
			return y;
		}else{
			return x;
		}
	}
	
	public int dfs(int i,int sum){
		if(i == len){
			if(arr[i-1] == 0){
				return sum;
			}else{
				return 0;
			}
		}
		
		if(arr[i - 1] == 1){
			if(arr[i] == 1){
				arr[i]=0;
			}else if(arr[i] == 0)
				arr[i]=1;
			if(arr[i - 1] == 1){
				arr[i - 1]=0;
			}else if(arr[i - 1] == 0)
				arr[i - 1]=1;
			if(arr[i+1] == 1){
				arr[i+1]=0;
			}else if(arr[i+1] == 0)
				arr[i+1]=1;
			sum++;
		}
		dfs(i+1,sum);
		return 0;
	}
	
	public void go(){
		Scanner scan = new Scanner(System.in);
		while(scan.hasNext()){
			String s = scan.nextLine();
			len = s.length();
			for(int i = 0;i < len;i ++){
				arr[i] = Integer.parseInt(s.charAt(i)+"");
			}
			
			System.out.println(dfs(1,0));
		}
	}
	
	public static void main(String[] args) {
		new Ques1201().go();
	}
}
